if ($msg == 'chat') {
  $self->sendMessage("While in chat, there are a few rules you should obey. They are:\r\n".
  " $d No swearing. It will be filtered out by our filter anyway.\r\n".
  " $d No advertising.\r\n".
  " $d No 'abusing' other users (child porn, insulting, etc.)\r\n".
  "While in chat, you can use several commands which can be listed by typing !menu.\r\n".
  "\r\n".
  "Please wait while you are transferred... (O)");
  $msn->do_one_loop();
  $msn->do_one_loop();
  $self->{callback} = 'chat';
  $self->{calluser} = $user;
  my $users = [];
  foreach my $convo (values %{$self->getConvoList()}) {
    if (exists $convo->{callback} and $convo->{callback} eq 'chat') {
      $users = push($users, [$convo->{calluser}]);
    }
  }
  $self->sendMessage("Welcome! The current users chatting are: ".join(", ", $users), Effect => 'B');
  $self->sendMessage("The current topic is: ", $chats->{chat}->{topic});
} else {
  if (exists $self->{callback} and $self->{callback} eq 'chat' and $self->{calluser} eq $user) {
    my $reply = &cmd_chat($self, $msg, $user);
    if ($reply eq 'noreply') {
      %style{Name} = "[$email] $name";
      foreach my $convo (values %{$self->getConvoList()}) {
        if (exists $convo->{callback} and $convo->{callback} eq 'chat' and $convo->getID() != $self->getID()) {
          $convo->sendMessage($msg, %style);
        }
      }
    }
  }
}